#ifndef VEC4_INCLUDED
#define VEC4_INCLUDED

#pragma once

#include "vec.h"

template <typename T>
union vec<T, 4>
{
	T data[4];
	struct { T x, y, z, w; };

	vec()
		: x(T()), y(T()), z(T()), w(T())
	{
	}

	vec(const vec& rhs)
		: x(rhs.x), y(rhs.y), z(rhs.z), w(rhs.w)
	{
	}

	vec(T _x, T _y, T _z, T _w)
		: x(_x), y(_y), z(_z), w(_w)
	{
	}
};

typedef vec<float, 4> vec4f;
typedef vec<double, 4> vec4d;

#endif